Trata-se simplesmente de uma tabela de funções redirecionada para cada driver. Ele representa o contexto no qual o canvas está situado; por exemplo, um Sistema de Janelas que possui janelas nas quais pode-se desenhar. Alguns drivers são portáteis e suas funções comportam-se da mesma forma em todas as plataformas. Outros são dependentes de plataforma e suas funções podem ter comportamentos diferentes, porém a biblioteca é implementada de forma a minimizar essas diferenças.
O canvas representa a superfície de desenho. Pode ser qualquer coisa: um arquivo, uma área cliente dentro de uma janela de um Sistema de Janelas, um papel usado pela impressora, etc. Cada canvas possui seus próprios atributos.
Você deve chamar cdCreateCanvas para criar um canvas e cdKillCanvas quando não o precisar mais. Se chamar uma função sem um canvas ativo (é necessário chamar cdActivate), ocorrerá uma invasão de memória. A função cdActiveCanvas dá como retorno o canvas corrente ativo. Você pode utilizar esta função para recuperar o canvas ativo antes de ativar o seu canvas, para que possa restaurá-lo após desenhar no seu.
Alguns canvas são buffered e precisam ser descarregados; para isso, utilize a função cdFlush. Além disso, a função cdFlush, em alguns drivers, pode ser utilizada para trocar de página, como no driver CD_PRINTER e no driver CD_PS.
Você pode limpar a superfície de desenho com a função cdClear, porém em alguns drivers a função pode apenas desenhar um retângulo usando a cor de fundo.
Alguns canvas podem ter seu conteúdo interpretado; a função cdPlay interpreta o conteúdo de um canvas e chama funções da biblioteca, de forma que os itens do conteúdo são exibidos no canvas ativo.
Você pode recuperar o tamanho original do canvas através da função cdGetCanvasSize. A origem do canvas está no canto inferior esquerdo do canvas, mas pode-se simular uma mudança na origem usando a função cdOrigin. Alguns drivers possuem sua origem nativa na canto superior direito, a função cdUpdateYAxis converte a coordenada Y desta orientação para a orientação da biblioteca CD e vice-versa, caso a origem esteja realmente no canto superior direito. A mudança de origem e a inversão de eixos, se necessário é feita na parte de controle da biblioteca CD, as coordenadas chegam aos drivers já convertidas para os seus respectivos sistemas de coordenadas.
Funções associadas: cdGetContext, cdCreateCanvas, cdKillCanvas, cdActivate, cdActiveCanvas, cdFlush, cdClear, cdPlay, cdSetFunction, cdGetCanvasSize, cdUpdateYAxis, cdOrigin, cdContextCaps.
É uma área retangular que limita a superfície de desenho. Qualquer primitiva chamada é desenhada apenas dentro do retângulo. Ela funciona como uma janela na qual só é possível ver o que está dentro, e afeta todas as primitivas. Você pode configurar a região de clipping utilizando a função cdClipArea e recuperá-la com cdGetClipArea. A função cdClip ativa e desativa a funcionalidade de clipping, porém não modifica a sua área. Em alguns drivers, a região de clipping pode ser um polígono.
Funções associadas: cdClipArea, cdGetClipArea, cdGetClipPoly, cdClip, cdBegin.
Existem 5 classes de atributos: Atributos Gerais, Atributos de Linha, Atributos de Marca, Atributos de Preenchimento e Atributos de Texto.
O sistema de cor da biblioteca é o RGB. Para simplificar algumas funções criamos uma representação compacta para os 3 valores. Para converter dessa representação para 3 valores separados e vice-versa, use as funções cdDecodeColor e cdEncodeColor. A forma com que uma cor é desenhada no canvas é afetada pelo estilo de desenho, que pode ser substituíndo o que está no canvas pela nova cor, ou aplicando operações boleanas do que está no canvas com a nova cor. Para isso deve-se utilizar a função cdWriteMode. Obs: a operação de XOR é muito útil pois, usando-se branco como a cor de frente e desenhando-se a mesma figura duas vezes, retorna-se a cor original antes de se desenhar, isso é usado para retorno da interação com o mouse em seleções de área de um canvas em uma janela, por exemplo.
Quando o canvas utilizado não possui suporte para mais de 8 bpp de resolução de cor, pode-se usar a função cdPalette para fornecer uma dica para o driver de que cores ele deve priorizar. O comportamento da cdPalette é dependete de driver.
Funções associadas: cdForeground, cdBackground, cdWriteMode, cdBackOpacity, cdPalette, cdGetColorPlanes, cdDecodeColor e cdEncodeColor.
Os Atributos de Preenchimento afetam as primitvas de caixa, setor e polígonos preenchidos. Preenchimentos podem ser de uma única cor, usando a cor de frente, podem ser hachurados com vários estilos, podem ser feitos atravéz de um padrão colorido, ou de um padrão monocromático usando a cor de frente e a cor de fundo. Os preenchimentos hachurados e monocromáticos são afetados pela opacidade de fundo, se transparente o fundo não é desenhado com a cor de fundo. Caso a cor de fundo ou a cor de frente sejam modificadas, os preenchimentos hachurados e monocromáticos devem ser modificados novamente para que sejam atualizados.
Repare que ao modificar um atributo de preenchimento, o estilo de preenchimento ativo passa a ser o do atributo modificado (hatch, stipple opu pattern). Mas isso não é verdade para a área de clipping. Ao se modificar a região de clipping, o clipping só é afetado se estiver ativo.
Funções associadas: cdInteriorStyle, cdHatch, cdStipple, cdPattern, cdGetStipple, cdGetPattern.
Os Atributos de Linhas afetam a primitiva de linha e todas as primitvas que são formadas por linhas, incluindo as primitvas de retangulo, arco e polígonos abertos e fechados sem preenchimento. Linhas possuem espessura e estilo (traçejado, contínuo, pontilhado, etc) e são afetadas apenas pela cor de frente. Linhas com estilo diferente do estilo contínuo são afetadas pelo atributo de opacidade de fundo e pela cor de fundo.
Funções associadas: cdLineWidth, cdLineStyle.
Atributos de Marca e de Texto afetam somente as primitivas respectivas, de marca e texto. As funções cdFont e cdNativeFont modificam de forma diferente o mesmo atribute de fonte do texto.
Funções associadas: cdMarkType, cdMarkSize, cdFont, cdGetFont, cdTextAligment, cdNativeFont.
Os valores de atributos não suportados pelo driver são modificados, mas são ignorados pelo driver. Use a função cdContextCaps para saber se o atributo é suportado pelo driver ou consulte o manual do driver.
O menor elemento do canvas. Depende apenas de atributos globais do canvas.
Função associada: cdPixel.
Uma marca é uma representação pontual. Pode ter tamanhos e tipos diferentes. Todos os tipos são afetados apenas pelos atributos de marca e pela cor de frente.
Funções associadas: cdMark, cdMarkType, cdMarkSize.
Tipos de Marcas
Trata-se de um segmento de reta que conecta dois pontos. A função
cdLine
inclui os dois pontos dados e desenha a linha utilizando a cor de frente. A espessura das linhas é controlada através da funçãocdLineWidth
. Com a funçãocdLineStyle
, você pode desenhar linhas pontilhadas com algumas variações. Linhas com estilo diferente do estilo contínuo são afetadas pelo atributo de opacidade de fundo e pela cor de fundo.Funções associadas: cdLine, cdLineWidth, cdLineStyle.
Estilos de Linhas
Um polígono é composto por diversos segmentos de reta conectados. Cada conexão é descrita por um vértice. Assim, para criar um polígono você deve adicionar vértices à estrutura interna de uma biblioteca utilizando cdBegin, cdVertex e cdEnd. O polígono pode ser aberto (não conecta o primeiro vértice ao último), fechado (conecta o primeiro vértice ao último) ou preenchido (o mesmo que fechado, porém preenchido com o estilo interior corrente).
Funções associadas: cdBegin, cdVertex, cdEnd.
Atributos do Polígono
Atributo de Opacidade
Trata-se de um retângulo sem preenchimento. É afetado pelos atributos de linha e pela cor de frente.
Funções associadas: cdRect.
Trata-se de um retângulo preenchido com a cor de frente, porém depende do estilo interior corrente. O estilo SÓLIDO depende apenas da cor de frente. O estilo HATCH depende da cor de frente e do atributo de opacidade. As linhas desenhadas com este estilo não dependem dos atributos de linha. O estilo STIPPLE depende da cor de frente, da cor de fundo e do atributo de opacidade. O estilo PATTERN depende apenas de atributos globais do canvas.
Funções associadas : cdBox.
Estilos de Hatch
É um arco elíptico desenhado em sentido anti-horário. É afetado pelos atributos de linha e pela cor de frente.
Funções associadas: cdArc.Parâmetros do Arco
Muito semelhante a um arco, porém preenchido com a cor de frente. Também depende do estilo interior.
Funções associadas: cdSector.
Parâmetros do Setor
Um texto com estilo. Pode ter cor de fundo opaca ou transparente. Quando esta for opaca, o texto é desenhado dentro de um retângulo com a cor de fundo; quando transparente apenas os caracteres do texto são desenhados. A posição em que o texto é desenhado depende do atributo de alinhamento do texto. A biblioteca possui apenas quatro fontes: System (que depende do driver e da plataforma), Courier (igualmente espaçada, com serifa), Times Roman (proporcional, com serifa) e Helvetica (proporcional, sem serifa). Cada fonte pode possuir alguns estilos: Plain, Bold, Italic e s combinação Bold and Italic. Você pode recuperar as dimensões da fonte selecionada com a função cdFontDim. Pode também recuperar a caixa envolvente de um texto específico antes de desenhar através da função cdTextSize. O texto é desenhado utilizando um ponto de referência; você pode modificar o alinhamento relativo a esse ponto através de cdTextAligment. Como uma alternativa para as fontes disponíveis no CD pode-se utilizar fontes nativas de drivers com a função
cdNativeFont
. Em todos os casos as funções de desenho esperam uma string no padrão ANSI (Windows, MAC e UNIX), string com códigos ASCII acima de 128 aparecerão com caracteres errados.Funções associadas: cdText, cdFont, cdGetFont, cdFontDim, cdTextSize, cdTextAligment, cdNativeFont.
Tipos de Fontes
![]()
Estilos de Fontes
![]()
Alinhamento do Texto
Atributos da Dimensão da Fonte
Existem dois tipos de imagens de cliente: RGB e RGB Indexada. A imagem RGB é composta por 3 buffers: vermelho, verde e azul (mais cores, mais memória). A RGB Indexada (também chamada imagem baseada em paleta) é composta por um buffer de índices para uma tabela e uma tabela de valores RGB codificados (menos cores, menos memória). O buffer é descrito por sua largura e comprimento em pixels. O ponto inicial do buffer é a origem da imagem, localizada no seu canto inferior esquerdo. Para recuperar um pixel na imagem, utilize a fórmula pixel(x,y)=buffer[y*width + x]. As funções de Put podem realizar zoom para aproximar ou afastar; a escala da imagem é feita através de interpolação pelo vizinho mais próximo. Mas não se pode especificar uma parte da imagem para ser desenhada.
Funções associadas: cdGetImageRGB, cdPutImageRGB, cdPutImageMap.
Trata-se de uma imagem para alto desempenho no formato interno da biblioteca. É dependente de driver/plataforma, porém é mais rápida do que as funções de imagens de cliente e é utilizada para desenho fora da tela (off screen drawing, double buffering, etc...). Você pode realizar gets e puts em diversos canvas, porém estes devem ser criados usando-se o mesmo driver. Pode-se especificar parte da imagem a ser desenhada, mas não é possível realizar zoom ao desenha-las.
Funções associadas: cdCreateImage, cdGetImage, cdPutImage, cdKillImage, cdScrollImage.
É um texto que utiliza uma fonte criada apenas com segmentos de retas. É muito útil para ser usado em diferentes escalas. Você deve configurar o tamanho do texto antes de desenhar qualquer texto. As funções ignoram o caracter de nova linha "\n"; apenas a função MultiLineVectorText considerará esse caracter. A direção padrão é horizontal, da esquerda para a direita.
Parâmetros do Texto de Vetores
Funções Associadas: cdVectorText, cdMultiLineVectorText, cdVectorTextDirection, cdVectorTextSize, cdGetVectorTextSize, cdVectorCharSize, cdVectorFont, cdVectorTextTransform.
Permite o uso de um Sistema de Coordenadas de Mundo. Neste sistema, você pode atribuir coordenadas a qualquer unidade que desejar. Após definir uma janela (região retangular) no seu mundo, cada coordenada dada é então mapeada para as coordenadas do canvas para desenhar as primitivas. Você pode definir um viewport no seu canvas para modificar o mapeamento das coordenadas de mundo para canvas. A figura abaixo mostra a relação entre Window e Viewport.
Window x Viewport
Caso você deseje mapear as coordenadas de um sistema para outro, utilize as funções wdWorld2Canvas e wdCanvas2World. Para usar qualquer uma das funções de Coordenadas de Mundo, você deve ativar o canvas através da função wdActivate.
Funções Associadas: wdWindow, wdViewport, wdWorld2Canvas, wdCanvas2World, wdGetWindow, wdGetViewport. Todas as funções de primitivas da biblioteca CD têm uma implementação equivalente em WD, de forma que é possível desenhar primitivas especificando coordenadas de mundo.
A qualidade da figura depende da conversão de WC para CD; assim, se o tamanho do canvas for pequeno, a qualidade da figura será baixa. Para aumentar a qualidade da figura, crie um canvas de maior tamanho, se possível.